package com.example.demo.config;


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;

/**
 * 是一个配置类
 */
@Configuration
public class RedisConfig {

    /**
     *
     *  用于配置RedisTemplate中的序列化格式（将默认的序列化改为Jackson格式）
     *
     * @param redisConnectionFactory
     * @return
     */
    @Bean
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<Object, Object> template = new RedisTemplate();
        //生成一个Jackson的序列化对象
        //new Jackson2JsonRedisSerializer(Object.class)
        //利用反射机制 将所有需要调用的类型 都序列化成Jason格式
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        template.setConnectionFactory(redisConnectionFactory);
        //生成的redis模板对象设置默认的序列化格式（Jason）
        template.setDefaultSerializer(jackson2JsonRedisSerializer);
        return template;
    }
}
